﻿// @brief
// @file EnumeratedValue.cs
// @date 2024年08月12日
// @author doublecat
// 
// Copyright (C) &lt;2024&gt;  &lt;doublecat&gt;
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

using System.Xml.Serialization;

namespace doublecat.mcu.svd;

public class EnumeratedValue {
    [XmlElement("name")]
    public required string Name { get; set; }

    [XmlElement("description")]
    public string? Description { get; set; }

    [XmlElement("value")]
    public string? Value { get; set; }

    [XmlElement("isDefault")]
    public bool? IsDefault { get; set; }

    public required EnumeratedValueCollection Parent { get; set; }

    public string GetName(bool composite = false) {
        return composite ? $"{Parent.GetName()}_{Name}" : Name;
    }
}
